package OtherAlgorithm;

import java.util.Comparator;
import java.util.PriorityQueue;

public class HeapTest {

    public static class AComp implements Comparator<Integer> {

        // 如果返回负数，认为第一个参数应该放在前面
        // 如果返回正数，认为第二个参数应该放在前面
        // 如果返回0，认为谁放上面都行
        @Override
        public int compare(Integer o1, Integer o2) {
            return o2 - o1;
        }
    }

    public static void main(String[] args) {
        // 传入自定义的比较器后，默认的小根堆可以变为大根堆
        PriorityQueue<Integer> heap = new PriorityQueue<>(new AComp());

        heap.add(6);
        heap.add(9);
        heap.add(2);
        heap.add(3);
        heap.add(10);
        heap.add(5);

        while (!heap.isEmpty()) {
            System.out.println(heap.poll());
        }
    }

}
